﻿
Namespace Negocios

    Public Class Tipo

#Region "Variáveis"

        Private dcDados As Dados.dcDadosDataContext

#End Region

#Region "Propriedades"

        Friend Property Contexto() As Dados.dcDadosDataContext
            Get
                If dcDados Is Nothing Then dcDados = New Dados.dcDadosDataContext
                Return dcDados
            End Get
            Set(ByVal value As Dados.dcDadosDataContext)
                dcDados = value
            End Set
        End Property

#End Region

#Region "Construtores"


#End Region

#Region "Funções Privadas"

        Private Function ConverterDadosEmObjeto(ByVal objTipoDados As Dados.Tipo) As Objetos.Tipo

            If objTipoDados Is Nothing Then Return Nothing

            Dim objTipo As New Objetos.Tipo

            With objTipo
                .CodigoClassificacao = Convert.ToInt32(objTipoDados.CodigoClassificacao)
                .CodigoTipo = Convert.ToInt32(objTipoDados.CodigoTipo)
                .DescricaoTipo = Convert.ToString(objTipoDados.DescricaoTipo)
            End With

            Return objTipo

        End Function

        Private Function ConverterDadosEmObjeto(ByVal lisTipoDados As List(Of Dados.Tipo)) As List(Of Objetos.Tipo)

            If lisTipoDados Is Nothing Then Return Nothing

            Dim lisTipo As New List(Of Objetos.Tipo)

            For Each objTipoDados In lisTipoDados
                lisTipo.Add(ConverterDadosEmObjeto(objTipoDados))
            Next

            Return lisTipo

        End Function

        Private Function RetornarTipo() As IQueryable(Of Dados.Tipo)

            Return (From Tipo In Contexto.Tipos)

        End Function

        Private Function RetornarTipo(ByVal intCodigoTipo As Integer) As IQueryable(Of Dados.Tipo)

            Return (From Tipo In RetornarTipo() Where Tipo.CodigoTipo.Equals(intCodigoTipo))

        End Function

#End Region

#Region "Funções Friend"


#End Region

#Region "Funções Públicas"

        Public Sub Salvar(ByVal objTipo As Objetos.Tipo)

            Try
                Dim booExiste As Boolean = True

                Dim objTipoDados As Dados.Tipo = RetornarTipo(objTipo.CodigoTipo).SingleOrDefault

                If objTipoDados Is Nothing Then

                    objTipoDados = New Dados.Tipo
                    objTipoDados.CodigoClassificacao = objTipo.CodigoClassificacao

                    booExiste = False

                End If

                With objTipoDados
                    .DescricaoTipo = objTipo.DescricaoTipo
                End With

                If Not booExiste Then Contexto.Tipos.InsertOnSubmit(objTipoDados)

                Contexto.SubmitChanges()

            Catch ex As Exception
                Throw
            End Try

        End Sub

        Public Sub Excluir(ByVal intCodigoTipo As Integer)

            Try

                Dim objTipoDados As Dados.Tipo = RetornarTipo(intCodigoTipo).SingleOrDefault

                If objTipoDados IsNot Nothing Then
                    Contexto.Tipos.DeleteOnSubmit(objTipoDados)
                    Contexto.SubmitChanges()
                End If

            Catch ex As Exception
                Throw
            End Try

        End Sub

        Public Function ListarTiposPorClassificacaoTipo(ByVal intCodigoClassificacaoTipo As Integer) As List(Of Objetos.Tipo)

            Try

                Return ConverterDadosEmObjeto((From Tipos In RetornarTipo() Where Tipos.CodigoClassificacao.Equals(intCodigoClassificacaoTipo)).ToList)

            Catch ex As Exception
                Throw
            End Try

        End Function

#End Region

    End Class

End Namespace